package top.fwpsl.script.base

/**
  * 条件表达式
  *
  * @author 风戏fw
  * @date 2020/11/24
  */
object ConditionDemo {

  /**
    * scala中没有三目运算符。scala中if else表达式是有返回值的，
    * > 如果if或者else返回的类型不一样，就返回Any类型（所有类型的公共超类型）。
    *
    * 如果缺少一个判断，什么都没有返回，但是Scala认为任何表达式都会有值，对于空值，
    * > 使用Unit类，写做()，叫做无用占位符，相当于java中的void。
    *
    * 行尾的位置不需要分号，只要能够从上下文判断出语句的终止即可。但是如果在单行中写多个语句，则需要分号分割。
    * > 在Scala中，{}块包含一系列表达式，其结果也是一个表达式。块中最后一个表达式的值就是块的值。
    *
    */
  def main(args: Array[String]) {
    val x = 1
    //判断x的值，将结果赋给变量y
    val y = if (x > 0) 1 else -1
    //打印y的值
    println(y)

    //支持混合类型表达式 返回值z的数据类型是 if、else后面代码块返回值的数据类型的父类型

    val z = if (x > 1) 1 else "error"
    //打印z的值
    println(z)

    //如果缺失else，相当于if (x > 2) 1 else ()
    //返回的是小括号()
    val m = if (x > 2) 1
    println(m)

    //在scala中每个表达式都有值，scala中有个Unit类，写做(),相当于Java中的void
    val n = if (x > 2) 1 else ()
    println(n)

    //if和else if
    val k = if (x < 0) 0 else if (x >= 1) 1 else -1
    println(k)
  }
}
